
<!DOCTYPE html><html lang=zh-Hans data-vue-meta-server-rendered><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no,viewport-fit=cover"><meta name=google-site-verification content=cCHsgG9ktuCTgWgYfqCJql8AeR4gAne4DTZqztPoirE><meta name=apple-itunes-app content="app-id=987739104"><meta name=baidu-site-verification content=qiK2a1kcFc><meta name=360-site-verification content=4c3c7d57d59f0e1a308462fbc7fd7e51><meta name=sogou_site_verification content=c49WUDZczQ><style>body {
    font-size: 16px;
    line-height: 2;
}
a, button, input {
    margin: 1rem 1.5rem;
}
img {
    width: 0;
    height: 0;
}
#juejin {
    overflow-x: hidden;
}</style><meta data-vue-meta="true" data-vmid="keywords" name="keywords" content="MyBatis"/><meta data-vue-meta="true" data-vmid="description" name="description" content="一、概述面试，难还是不难？取决于面试者的底蕴（气场+技能）、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判，在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑：“面试官为什么会这样问？他希望听到什么答案？”然后针对性的准备和回答就行了，无"/><title data-vue-meta="true">面试官都会问的Mybatis面试题，你会这样回答吗？ - 掘金</title><link rel=apple-touch-icon sizes=180x180 href=https://b-gold-cdn.xitu.io/favicons/v2/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=https://b-gold-cdn.xitu.io/favicons/v2/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=https://b-gold-cdn.xitu.io/favicons/v2/favicon-16x16.png><link rel=manifest href=https://b-gold-cdn.xitu.io/favicons/v2/manifest.json><link rel=mask-icon href=https://b-gold-cdn.xitu.io/favicons/v2/safari-pinned-tab.svg color=#5bbad5><link rel="shortcut icon" href=https://b-gold-cdn.xitu.io/favicons/v2/favicon.ico><meta name=msapplication-config content=https://b-gold-cdn.xitu.io/favicons/v2/browserconfig.xml><meta name=theme-color content=#ffffff><link rel=search title=掘金 href=https://b-gold-cdn.xitu.io/conf/search.xml type=application/opensearchdescription+xml><link rel=stylesheet href=https://b-gold-cdn.xitu.io/ionicons/2.0.1/css/ionicons.min.css><link rel=stylesheet href=https://b-gold-cdn.xitu.io/asset/fw-icon/1.0.9/iconfont.css><link href=https://b-gold-cdn.xitu.io/v3/static/css/0.98578ba83271a4dabd77.css rel=stylesheet></head><body><div id="juejin" data-server-rendered="true" data-v-5cbcd4ce><div class="global-component-box" data-v-5cbcd4ce><!----><!----><!----><!----><!----><div class="emoji-barrage" data-v-d186bca6 data-v-5cbcd4ce><!----></div><div class="book-new-user-award-popup" style="display:none;" data-v-084cb188 data-v-5cbcd4ce><div class="content-box" style="display:;" data-v-084cb188><div class="close ion-close-round" data-v-084cb188></div><div class="header" data-v-084cb188><div class="icon" data-v-084cb188><img src="https://b-gold-cdn.xitu.io/v3/static/img/icon.a87e5ae.svg" data-v-084cb188></div><div class="txt" data-v-084cb188>新人专享好礼</div></div><div class="desc" data-v-084cb188>凡未购买过小册的用户，均可领取三张 5 折新人专享券，购买小册时自动使用专享券，最高可节省 45 元。</div><div class="tickets" data-v-084cb188><div class="ticket" data-v-084cb188><div class="ticket__inner" data-v-084cb188><div class="enjoy" data-v-084cb188><span class="new-title" data-v-084cb188>小册新人 5 折券</span></div><div class="sale" data-v-084cb188>最高可省 15 元</div></div></div><div class="ticket" data-v-084cb188><div class="ticket__inner" data-v-084cb188><div class="enjoy" data-v-084cb188><span class="new-title" data-v-084cb188>小册新人 5 折券</span></div><div class="sale" data-v-084cb188>最高可省 15 元</div></div></div><div class="ticket" data-v-084cb188><div class="ticket__inner" data-v-084cb188><div class="enjoy" data-v-084cb188><span class="new-title" data-v-084cb188>小册新人 5 折券</span></div><div class="sale" data-v-084cb188>最高可省 15 元</div></div></div></div><div class="remark" data-v-084cb188>注：专享券的使用期限在领券的七天内。</div><div class="submit-btn" data-v-084cb188>一键领取</div></div><div class="model success" style="display:none;" data-v-084cb188><div class="heading" data-v-084cb188>领取成功</div><div class="content-text" data-v-084cb188>购买小册时自动使用专享券</div><div class="btn-success-footer" data-v-084cb188><div class="btn-ok" data-v-084cb188>知道了</div><div class="btn-ok btn-link" data-v-084cb188>前往小册首页</div></div></div><div class="model fail" style="display:none;" data-v-084cb188><div class="heading" data-v-084cb188>领取失败</div><div class="content-text" data-v-084cb188>本活动仅适用于小册新用户</div><div class="btn-ok" data-v-084cb188>知道了</div></div></div><!----><!----><div class="bind-phone-number-modal-box" data-v-78718a13 data-v-5cbcd4ce><div st:block="bindPhoneNumberModal" class="modal-mask" style="display:none;" data-v-78718a13 data-v-78718a13></div><form class="bind-phone-number-form" style="display:none;" data-v-78718a13 data-v-78718a13><i title="关闭" class="close-btn ion-close-round" data-v-78718a13></i><h1 class="title" data-v-78718a13>提示</h1><h2 class="hint" data-v-78718a13>根据我国<a href="http://www.cac.gov.cn/2017-08/25/c_1121541842.htm" target="_blank" style="color:#007fff">《互联网跟帖评论服务管理规定》</a>，您需要绑定手机号后才可在掘金社区内发布内容。</h2><div class="input-group" data-v-78718a13><div class="input-box" data-v-78718a13><input maxlength="64" placeholder="请输入要绑定的手机号码" value="" class="input" data-v-78718a13></div><!----><!----></div><button st:name="bindBtn" class="btn" data-v-78718a13>绑定手机</button></form></div></div><!----><div class="view-container" data-v-576c25a1 data-v-4917d118 data-v-5cbcd4ce><div class="main-header-box" data-v-576c25a1><header class="main-header main-header unauthorized visible" data-v-6707ab78 data-v-576c25a1><div class="container" data-v-6707ab78><a href="/" class="logo" data-v-6707ab78><img src="https://b-gold-cdn.xitu.io/v3/static/img/logo.a7995ad.svg" alt="掘金" class="logo-img" data-v-6707ab78><img src="https://b-gold-cdn.xitu.io/v3/static/img/simplify-logo.3e3c253.svg" alt="掘金" class="mobile" data-v-6707ab78></a><nav role="navigation" class="main-nav" data-v-6707ab78><ul class="nav-list" data-v-6707ab78><li class="main-nav-list" data-v-6707ab78><div class="phone-show-menu" data-v-6707ab78><span data-v-6707ab78>首页</span><div class="icon ion-arrow-down-b" data-v-6707ab78></div></div><ul class="phone-hide" data-v-6707ab78><li class="nav-item link-item route-active" data-v-6707ab78><a href="/" data-v-6707ab78>首页</a></li><li class="nav-item link-item activities" data-v-6707ab78><a href="/pins" data-v-6707ab78>沸点</a></li><li class="nav-item link-item" data-v-6707ab78><a href="/topics" data-v-6707ab78>话题</a></li><li class="nav-item link-item book" data-v-6707ab78><a href="/books" data-v-6707ab78>小册</a></li><li class="nav-item link-item" data-v-6707ab78><a href="/events/all" data-v-6707ab78>活动</a></li></ul></li><li class="nav-item search" data-v-6707ab78><form role="search" class="search-form" data-v-6707ab78><input type="search" maxlength="32" placeholder="搜索掘金" value="" class="search-input" data-v-6707ab78><img src="https://b-gold-cdn.xitu.io/v3/static/img/juejin-search-icon.6f8ba1b.svg" alt="搜索" class="search-icon" data-v-6707ab78></form></li><!----><!----><!----><li class="nav-item submit" data-v-6707ab78><img src="https://b-gold-cdn.xitu.io/v3/static/img/submit-icon.53f4253.svg" class="icon" data-v-6707ab78><span data-v-6707ab78>写文章</span><!----></li><li class="nav-item auth" data-v-6707ab78><span class="login" data-v-6707ab78>登录</span><span class="register" data-v-6707ab78>注册</span></li></ul></nav></div></header></div><main class="container main-container" style="max-width:;" data-v-576c25a1><div class="view column-view" data-v-576c25a1 data-v-4917d118><div class="main-area article-area shadow" data-v-576c25a1 data-v-4917d118><article itemscope="itemscope" itemtype="http://schema.org/Article" class="article" data-v-4917d118><meta itemprop="url" content="https://juejin.im/post/5ce25058e51d45105773e63f"><meta itemprop="headline" content="面试官都会问的Mybatis面试题，你会这样回答吗？"><meta itemprop="keywords" content="MyBatis"><meta itemprop="datePublished" content="2019-05-20T07:01:15.634Z"><meta itemprop="image" content="https://b-gold-cdn.xitu.io/icon/icon-128.png"><div itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><meta itemprop="name" content="摘星不想说话"><meta itemprop="url" content="https://juejin.im/user/5cce759d6fb9a031ee3c2374"></div><div itemprop="publisher" itemscope="itemscope" itemtype="http://schema.org/Organization"><meta itemprop="name" content="掘金"><div itemprop="logo" itemscope="itemscope" itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://b-gold-cdn.xitu.io/icon/icon-white-180.png"><meta itemprop="width" content="180"><meta itemprop="height" content="180"></div></div><div class="author-info-block" data-v-4917d118><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="avatar-link" data-v-4917d118><div data-src="https://b-gold-cdn.xitu.io/v3/static/img/default-avatar.e30559a.svg" class="lazy avatar avatar" style="background-image:none;" data-v-340b0fa8 data-v-56dcd6bc data-v-4917d118></div></a><div class="author-info-box" data-v-4917d118><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="username username ellipsis" data-v-f46f1956 data-v-4917d118><!----></a><div class="meta-box" data-v-4917d118><time datetime="2019-05-20T07:01:15.634Z" title="Mon May 20 2019 15:01:15 GMT+0800 (China Standard Time)" class="time" data-v-4917d118>2019年05月20日</time><span class="views-count" data-v-4917d118>阅读 418</span><!----></div></div><!----></div><!----><h1 class="article-title" data-v-4917d118>面试官都会问的Mybatis面试题，你会这样回答吗？</h1><div data-id="5ce250bbf265da1b802016d2" itemprop="articleBody" class="article-content" data-v-4917d118><div><img alt="面试官都会问的Mybatis面试题，你会这样回答吗？" class="lazyload" data-src="https://user-gold-cdn.xitu.io/2019/5/20/16ad40a2a8af7789?imageView2/0/w/1280/h/960/ignore-error/1" data-width="358" data-height="269"><p></p></div><p><b>一、概述</b></p><p>面试，难还是不难？取决于面试者的底蕴（气场+技能）、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判，在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑：“面试官为什么会这样问？他希望听到什么答案？”然后针对性的准备和回答就行了，无他。</p><p>“你的优势是什么？”多年前我觉得这个问题很无聊，现在我经常这么问面试者，因为我真的想知道他的优势是什么，能给公司带来什么。最终能和面试官聊的开心愉快投缘的叫面霸。反之叫面瘫。</p><p>我带过的学生里找工作时有个有趣的现象，经常是懂沟通的人先找到工作，而不是技术最牛的那个。</p><p>以下是我为大家整理的一些关于Mybaits的面试题及答案。</p><p><b>1、什么是Mybatis？</b></p><p>1、Mybatis是一个半ORM（对象关系映射）框架，它内部封装了JDBC，开发时只需要关注SQL语句本身，不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql，可以严格控制sql执行性能，灵活度高。</p><p>2、MyBatis 可以使用 XML 或注解来配置和映射原生信息，将 POJO映射成数据库中的记录，避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。</p><p>3、通过xml 文件或注解的方式将要执行的各种 statement 配置起来，并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句，最后由mybatis框架执行sql并将结果映射为java对象并返回。（从执行sql到返回result的过程）。</p><p><b>2、Mybaits的优点：</b></p><p>1、基于SQL语句编程，相当灵活，不会对应用程序或者数据库的现有设计造成任何影响，SQL写在XML里，解除sql与程序代码的耦合，便于统一管理；提供XML标签，支持编写动态SQL语句，并可重用。</p><p>2、与JDBC相比，减少了50%以上的代码量，消除了JDBC大量冗余的代码，不需要手动开关连接；</p><p>3、很好的与各种数据库兼容（因为MyBatis使用JDBC来连接数据库，所以只要JDBC支持的数据库MyBatis都支持）。</p><p>4、能够与Spring很好的集成；</p><p>5、提供映射标签，支持对象与数据库的ORM字段关系映射；提供对象关系映射标签，支持对象关系组件维护。</p><p><b>3、MyBatis框架的缺点：</b></p><p>1、SQL语句的编写工作量较大，尤其当字段多、关联表多时，对开发人员编写SQL语句的功底有一定要求。</p><p>2、SQL语句依赖于数据库，导致数据库移植性差，不能随意更换数据库。</p><p><b>4、MyBatis框架适用场合：</b></p><p>1、MyBatis专注于SQL本身，是一个足够灵活的DAO层解决方案。</p><p>2、对性能的要求很高，或者需求变化较多的项目，如互联网项目，MyBatis将是不错的选择。</p><p><b>5、MyBatis与Hibernate有哪些不同？</b></p><p>1、Mybatis和hibernate不同，它不完全是一个ORM框架，因为MyBatis需要程序员自己编写Sql语句。</p><p>2、Mybatis直接编写原生态sql，可以严格控制sql执行性能，灵活度高，非常适合对关系数据模型要求不高的软件开发，因为这类软件需求变化频繁，一但需求变化要求迅速输出成果。但是灵活的前提是mybatis无法做到数据库无关性，如果需要实现支持多种数据库的软件，则需要自定义多套sql映射文件，工作量大。</p><p>3、Hibernate对象/关系映射能力强，数据库无关性好，对于关系模型要求高的软件，如果用hibernate开发可以节省很多代码，提高效率。</p><div><img alt="面试官都会问的Mybatis面试题，你会这样回答吗？" class="lazyload" data-src="https://user-gold-cdn.xitu.io/2019/5/20/16ad40a2a89d3800?imageslim" data-width="330" data-height="198"><p>火速编程中</p></div><p><b>6、#{}和${}的区别是什么？</b></p><p>#{} 是预编译处理，${}是字符串替换。</p><p>Mybatis在处理#{}时，会将sql中的#{}替换为?号，调用PreparedStatement的set方法来赋值；</p><p>Mybatis在处理${}时，就是把${}替换成变量的值。</p><p>使用#{}可以有效的防止SQL注入，提高系统安全性。</p><p><b>7、当实体类中的属性名和表中的字段名不一样 ，怎么办 ？</b></p><p>第1种： 通过在查询的sql语句中定义字段名的别名，让字段名的别名和实体类的属性名一致。</p><p>第2种： 通过 &lt;resultMap&gt; 来映射字段名和实体类属性名的一一对应的关系。</p><p><b>8、 模糊查询like语句该怎么写?</b></p><p>第1种：在Java代码中添加sql通配符。</p><p>第2种：在sql语句中拼接通配符，会引起sql注入</p><p><b>9、通常一个Xml映射文件，都会写一个Dao接口与之对应，请问，这个Dao接口的工作原理是什么？Dao接口里的方法，参数不同时，方法能重载吗？</b></p><p>Dao接口即Mapper接口。接口的全限名，就是映射文件中的namespace的值；接口的方法名，就是映射文件中Mapper的Statement的id值；接口方法内的参数，就是传递给sql的参数。</p><p>Mapper接口是没有实现类的，当调用接口方法时，接口全限名+方法名拼接字符串作为key值，可唯一定位一个MapperStatement。在Mybatis中，每一个 &lt;select&gt;、&lt;insert&gt;、&lt;update&gt;、&lt;delete&gt; 标签，都会被解析为一个MapperStatement对象。</p><p>举例： com.mybatis3.mappers.StudentDao.findStudentById ，可以唯一找到namespace为 com.mybatis3.mappers.StudentDao 下面 id 为 findStudentById 的 MapperStatement。</p><p>Mapper接口里的方法，是不能重载的，因为是使用 全限名+方法名 的保存和寻找策略。Mapper 接口的工作原理是JDK动态代理，Mybatis运行时会使用JDK动态代理为Mapper接口生成代理对象proxy，代理对象会拦截接口方法，转而执行MapperStatement所代表的sql，然后将sql执行结果返回。</p><p><b>10、Mybatis是如何进行分页的？分页插件的原理是什么？</b></p><p>Mybatis使用RowBounds对象进行分页，它是针对ResultSet结果集执行的内存分页，而非物理分页。可以在sql内直接书写带有物理分页的参数来完成物理分页功能，也可以使用分页插件来完成物理分页。</p><p>分页插件的基本原理是使用Mybatis提供的插件接口，实现自定义插件，在插件的拦截方法内拦截待执行的sql，然后重写sql，根据dialect方言，添加对应的物理分页语句和物理分页参数。</p><p><b>11、Mybatis是如何将sql执行结果封装为目标对象并返回的？都有哪些映射形式？</b></p><p>第一种是使用 &lt;resultMap&gt; 标签，逐一定义数据库列名和对象属性名之间的映射关系。</p><p>第二种是使用sql列的别名功能，将列的别名书写为对象属性名。</p><p>有了列名与属性名的映射关系后，Mybatis通过反射创建对象，同时使用反射给对象的属性逐一赋值并返回，那些找不到映射关系的属性，是无法完成赋值的。</p><p><b>12、如何执行批量插入?</b></p><p>首先,创建一个简单的insert语句:</p><p>然后在java代码中像下面这样执行批处理插入:</p><p><b>13、如何获取自动生成的(主)键值?</b></p><p>insert 方法总是返回一个int值 ，这个值代表的是插入的行数。</p><p>如果采用自增长策略，自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中。</p><p>示例：</p><p><b>14、在mapper中如何传递多个参数?</b></p><p>1、第一种：</p><p>DAO层的函数</p><p>2、第二种： 使用 @param 注解:</p><p>然后,就可以在xml像下面这样使用(推荐封装为一个map,作为单个参数传递给mapper):</p><p>3、第三种：多个参数封装成map</p><p><b>15、Mybatis动态sql有什么用？执行原理？有哪些动态sql？</b></p><p>Mybatis动态sql可以在Xml映射文件内，以标签的形式编写动态sql，执行原理是根据表达式的值 完成逻辑判断并动态拼接sql的功能。</p><p>Mybatis提供了9种动态sql标签： trim|where|set|foreach|if|choose|when|otherwise|bind。</p><p><b>16、Xml映射文件中，除了常见的select|insert|updae|delete标签之外，还有哪些标签？</b></p><p>答： &lt;resultMap&gt;、&lt;parameterMap&gt;、&lt;sql&gt;、&lt;include&gt;、&lt;selectKey&gt; ，加上动态sql的9个标签，其中 &lt;sql&gt; 为sql片段标签，通过 &lt;include&gt; 标签引入sql片段， &lt;selectKey&gt; 为不支持自增的主键生成策略标签。</p><p>17、Mybatis的Xml映射文件中，不同的Xml映射文件，id是否可以重复？</p><p>不同的Xml映射文件，如果配置了namespace，那么id可以重复；如果没有配置namespace，那么id不能重复；</p><p>原因就是namespace+id是作为Map &lt;String,MapperStatement&gt; 的key使用的，如果没有namespace，就剩下id，那么，id重复会导致数据互相覆盖。有了namespace，自然id就可以重复，namespace不同，namespace+id自然也就不同。</p><p><b>18、为什么说Mybatis是半自动ORM映射工具？它与全自动的区别在哪里？</b></p><p>Hibernate属于全自动ORM映射工具，使用Hibernate查询关联对象或者关联集合对象时，可以根据对象关系模型直接获取，所以它是全自动的。而Mybatis在查询关联对象或关联集合对象时，需要手动编写sql来完成，所以，称之为半自动ORM映射工具。</p><p><b>19、 一对一、一对多的关联查询 ？</b></p><p><b>20、MyBatis实现一对一有几种方式?具体怎么操作的？</b></p><p>有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在resultMap里面配置association节点配置一对一的类就可以完成；</p><p>嵌套查询是先查一个表，根据这个表里面的结果的 外键id，去再另外一个表里面查询数据,也是通过association配置，但另外一个表的查询通过select属性配置。</p><p><b>21、MyBatis实现一对多有几种方式,怎么操作的？</b></p><p>有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在resultMap里面的collection节点配置一对多的类就可以完成；嵌套查询是先查一个表,根据这个表里面的 结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置。</p><p><b>22、Mybatis是否支持延迟加载？如果支持，它的实现原理是什么？</b></p><p>答：Mybatis仅支持association关联对象和collection关联集合对象的延迟加载，association指的就是一对一，collection指的就是一对多查询。在Mybatis配置文件中，可以配置是否启用延迟加载lazyLoadingEnabled=true|false。</p><p>它的原理是，使用CGLIB创建目标对象的代理对象，当调用目标方法时，进入拦截器方法，比如调用a.getB().getName()，拦截器invoke()方法发现a.getB()是null值，那么就会单独发送事先保存好的查询关联B对象的sql，把B查询上来，然后调用a.setB(b)，于是a的对象b属性就有值了，接着完成a.getB().getName()方法的调用。这就是延迟加载的基本原理。</p><p>当然了，不光是Mybatis，几乎所有的包括Hibernate，支持延迟加载的原理都是一样的。</p><div><img alt="面试官都会问的Mybatis面试题，你会这样回答吗？" class="lazyload" data-src="https://user-gold-cdn.xitu.io/2019/5/20/16ad40a2a88df0d6?imageView2/0/w/1280/h/960/ignore-error/1" data-width="385" data-height="250"><p>发现新的BUG</p></div><p><b>23、Mybatis的一级、二级缓存:</b></p><p>1）一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存，其存储作用域为 Session，当 Session flush 或 close 之后，该 Session 中的所有 Cache 就将清空，默认打开一级缓存。</p><p>2）二级缓存与一级缓存其机制相同，默认也是采用 PerpetualCache，HashMap 存储，不同在于其存储作用域为 Mapper(Namespace)，并且可自定义存储源，如 Ehcache。默认不打开二级缓存，要开启二级缓存，使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置 &lt;cache/&gt; ；</p><p>3）对于缓存数据更新机制，当某一个作用域(一级缓存 Session/二级缓存Namespaces)的进行了C/U/D 操作后，默认该作用域下所有 select 中的缓存将被 clear。</p><p><b>24、什么是MyBatis的接口绑定？有哪些实现方式？</b></p><p>接口绑定，就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定, 我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。</p><p>接口绑定有两种实现方式,一种是通过注解绑定，就是在接口的方法上面加上 @Select、@Update等注解，里面包含Sql语句来绑定；另外一种就是通过xml里面写SQL来绑定, 在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名。当Sql语句比较简单时候,用注解绑定, 当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多。</p><p><b>25、使用MyBatis的mapper接口调用时有哪些要求？</b></p><p>1、Mapper接口方法名和mapper.xml中定义的每个sql的id相同； 2、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同； 3、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同； 4、Mapper.xml文件中的namespace即是mapper接口的类路径。</p><p><b>26、Mapper编写有哪几种方式？</b></p><p>第一种：接口实现类继承SqlSessionDaoSupport：使用此种方法需要编写mapper接口，mapper接口实现类、mapper.xml文件。</p><p>1、在sqlMapConfig.xml中配置mapper.xml的位置</p><p>2、定义mapper接口</p><p>3、实现类集成SqlSessionDaoSupport mapper方法中可以this.getSqlSession()进行数据增删改查。</p><p>4、spring 配置</p><p>第二种：使用 org.mybatis.spring.mapper.MapperFactoryBean ：</p><p>1、在sqlMapConfig.xml中配置mapper.xml的位置，如果mapper.xml和mappre接口的名称相同且在同一个目录，这里可以不用配置</p><p>2、定义mapper接口：</p><p>3、mapper.xml中的namespace为mapper接口的地址 2、mapper接口中的方法名和mapper.xml中的定义的statement的id保持一致 3、Spring中定义</p><p>第三种：使用mapper扫描器：</p><p>1、mapper.xml文件编写：</p><p>mapper.xml中的namespace为mapper接口的地址； mapper接口中的方法名和mapper.xml中的定义的statement的id保持一致； 如果将mapper.xml和mapper接口的名称保持一致则不用在sqlMapConfig.xml中进行配置。</p><p>2、定义mapper接口：</p><p>注意mapper.xml的文件名和mapper的接口名称保持一致，且放在同一个目录</p><p>3、配置mapper扫描器：</p><p>4、使用扫描器后从spring容器中获取mapper的实现对象。</p><p><b>27、简述Mybatis的插件运行原理，以及如何编写一个插件。</b></p><p>答：Mybatis仅可以编写针对ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件，Mybatis使用JDK的动态代理，为需要拦截的接口生成代理对象以实现接口方法拦截功能，每当执行这4种接口对象的方法时，就会进入拦截方法，具体就是InvocationHandler的invoke()方法，当然，只会拦截那些你指定需要拦截的方法。</p><p>编写插件：实现Mybatis的Interceptor接口并复写intercept()方法，然后在给插件编写注解，指定要拦截哪一个接口的哪些方法即可，记住，别忘了在配置文件中配置你编写的插件。</p><div>&nbsp;感谢您耐心看完的文章，顺便给大家推荐一个Java技术交流群：710373545里面会分享一些资深架构师录制的视频资料：有Spring，MyBatis，Netty源码分析，高并发、高性能、分布式、微服务架构的原理，JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源，目前受益良多！<br></div></div></article><div class="tag-list-box" data-v-576c25a1 data-v-4917d118><div class="tag-list-title" data-v-576c25a1 data-v-4917d118>关注下面的标签，发现更多相似文章</div><div st:block="tagList" class="tag-list" data-v-576c25a1 data-v-4917d118><a href="/tag/MyBatis" target="_blank" rel="" st:name="tag" class="item" data-v-4917d118><div data-src="https://lc-gold-cdn.xitu.io/b661fda3bb564d3411d5.png?imageView2/2/w/42/h/42/q/85/interlace/1" class="lazy thumb tag-icon" style="background-image:none;background-size:contain;" data-v-340b0fa8 data-v-1eaafbd6 data-v-4917d118></div><div class="tag-title" data-v-4917d118>MyBatis</div></a></div></div><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" data-v-4917d118><div class="footer-author-block" data-v-4917d118><div itemscope="itemscope" itemtype="http://schema.org/Person" class="author" data-v-0251d3be data-v-4917d118><!----><div class="author-info-block" data-v-0251d3be><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="avatar-link" data-v-0251d3be><div data-src="https://b-gold-cdn.xitu.io/v3/static/img/default-avatar.e30559a.svg" class="lazy avatar avatar" style="background-image:none;" data-v-340b0fa8 data-v-56dcd6bc data-v-0251d3be></div></a><div class="author-info-box" data-v-0251d3be><div class="profile-box" data-v-0251d3be><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="username username ellipsis" data-v-f46f1956 data-v-0251d3be><!----></a><span class="position ellipsis" data-v-0251d3be></span></div><div class="meta-box" data-v-0251d3be><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="posts" data-v-0251d3be><span class="count post-count" data-v-0251d3be>发布了  篇专栏 · </span></a><span class="count" data-v-0251d3be>获得点赞  · </span><span class="count" data-v-0251d3be>获得阅读 </span></div></div><!----></div></div></div></a><div st:block="banner" class="article-banner" data-v-576c25a1 data-v-4917d118><a st:name="link" st:state="https://juejin.im/extension/?utm_source=juejin.im&amp;utm_medium=post&amp;utm_campaign=extension_promotion" href="https://juejin.im/extension/?utm_source=juejin.im&amp;utm_medium=post&amp;utm_campaign=extension_promotion" target="_blank" class="banner-title" data-v-576c25a1 data-v-4917d118>安装掘金浏览器插件</a><div class="banner-content" data-v-576c25a1 data-v-4917d118>打开新标签页发现好内容，掘金、GitHub、Dribbble、ProductHunt 等站点内容轻松获取。快来安装掘金浏览器插件获取高质量内容吧！</div></div><!----><!----><div id="comment-box" class="comment-list-box" data-v-2fe7d423 data-v-4917d118><div class="title" data-v-2fe7d423>评论</div><div class="comment-form comment-form" data-v-003f06f2 data-v-2fe7d423><div class="avatar-box" data-v-003f06f2><div data-src="https://b-gold-cdn.xitu.io/v3/static/img/default-avatar.e30559a.svg" class="lazy avatar avatar" style="background-image:none;" data-v-340b0fa8 data-v-56dcd6bc data-v-003f06f2></div></div><div class="form-box" data-v-003f06f2><div class="input-box" data-v-003f06f2><div class="auth-card" data-v-0d583bd0 data-v-003f06f2><!----><div contenteditable="true" spellcheck="false" placeholder="输入评论..." class="rich-input empty" data-v-0d583bd0 data-v-003f06f2><br data-v-0d583bd0 data-v-003f06f2></div></div><!----></div><!----></div><input type="file" class="hidden" data-v-003f06f2></div><!----><!----></div></div><!----><!----><div st:block="sidebar" class="sidebar sidebar" data-v-db1bb124 data-v-4917d118><div class="sidebar-block author-block shadow" data-v-3d7951e8 data-v-70685a54 data-v-db1bb124><div class="block-title" data-v-3d7951e8>关于作者</div><div class="block-body" data-v-3d7951e8><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="user-item item" data-v-70685a54><div data-src="https://b-gold-cdn.xitu.io/v3/static/img/default-avatar.e30559a.svg" class="lazy avatar avatar" style="background-image:none;" data-v-340b0fa8 data-v-56dcd6bc data-v-70685a54></div><div class="info-box" data-v-70685a54><a href="/post/5ce25058e51d45105773e63f" target="_blank" rel="" class="username" data-v-f46f1956 data-v-70685a54><!----></a><!----></div></a><!----><!----><!----></div></div><!----><!----><!----><!----><!----><div class="sticky-block-box" data-v-db1bb124><div class="sidebar-block catalog-block pure" data-v-3d7951e8 data-v-fcd45df2 data-v-db1bb124><nav class="article-catalog" style="display:none;" data-v-3cfc82d6 data-v-fcd45df2><div class="catalog-title" data-v-3cfc82d6>目录</div><div class="catalog-body" data-v-3cfc82d6><ul class="catalog-list" style="margin-top:0px;" data-v-3cfc82d6></ul></div></nav></div></div></div><div class="article-suspended-panel article-suspended-panel" data-v-1d6f53d3 data-v-4917d118><div badge="1" class="like-btn panel-btn like-adjust with-badge" data-v-1d6f53d3></div><div badge="0" class="comment-btn panel-btn comment-adjust" data-v-1d6f53d3></div><div class="collect-btn panel-btn" data-v-1d6f53d3><!----></div><div class="share-title" data-v-1d6f53d3>分享</div><div class="weibo-btn share-btn panel-btn" data-v-1d6f53d3></div><div class="qq-btn share-btn panel-btn" data-v-1d6f53d3></div><div class="wechat-btn share-btn panel-btn" data-v-1d6f53d3><img src="" class="wechat-qr-code-img shadow" style="display:none;" data-v-1d6f53d3></div></div><div class="image-viewer-box" data-v-5dbe6bfa data-v-4917d118><!----></div><!----></div></main></div><!----></div>
<div id="jjis" style="display:none;" data-state="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"></div>

<script type=text/javascript src=https://b-gold-cdn.xitu.io/v3/static/js/runtime.17cb348ef7939a8ddc67.js></script><script type=text/javascript src=https://b-gold-cdn.xitu.io/v3/static/js/0.b2f72d4386a263fcb48d.js></script><script type=text/javascript src=https://b-gold-cdn.xitu.io/v3/static/js/1.b6dc046a4db72f918694.js></script></body></html>
    